#include <iostream>

using std::cout;
using std::endl;

int func()
{
    cout << "int func()" << endl;
    return 10;
}

int func2()
{
    cout << "int func2()" << endl;
    return 20;
}

int func3(int x, int y)
{
    cout << "int func3(int, int)" << endl;
    return x + y;
}

void test()
{
    //1、函数指针的定义形式
    typedef int (*pFunc)();//C中取别名
    /* using pFunc = int(*)();//C++中的取别名 */

    //2、函数指针的使用方法/步骤:回调函数的注册与执行
    //回调函数(此处就是个普通函数)
    //3、回调函数的使用思想：延迟调用的思想
    //例如：多态
    /* func();//调用函数，执行函数 */
    pFunc f = &func;//回调函数的注册
    //...
    //...
    cout << "f() = " << f() << endl;//回调函数的执行

    cout << endl;
    f = func2;
    cout << "f() = " << f() << endl;

    cout << endl;
    /* pFunc ff = func3;//指针的类型就不匹配 */
}

int main(int argc, char *argv[])
{
    test();
    return 0;
}

